[PHP5, OOP] Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen wurde

Hallo,

ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
bekommen. Beispiel:

class Names
{

function myName()
{
// hier soll "myName" ausgegeben werden
}

}


Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
Beispiel

class Names
{

function MyName()
{
// hier soll "callMyName" ausgegeben werden
}

function callMyName()
{
$this->MyName();
}


Gibt es da ene Möglichkeit?

gruß

Christian
Christian Schmidt [ So, 02 September 2007 16:58 ] [ ID #1810825 ]

Re: [PHP5, OOP] Eigenen Methodennamen herausfinden oder von welcherMethode aufgerufen wurde

Christian Schmidt wrote:
> Hallo,
>
> ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> bekommen. Beispiel:

> Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
> Beispiel
[...]
> Gibt es da ene Möglichkeit?

Ja, siehe debug_backtrace: http://www.php.net/debug-backtrace.

Wenn Dein Konzept stimmt solltest Du so etwas auch nur zur Fehlersuche
und -Analyse benötigen.

Gruß

Heiko
--
http://portal.richler.de/ Namensportal zu Richler
http://www.richler.de/ Heiko Richler: Computer - Know How!
http://www.richler.info/ private Homepage
Heiko Richler [ So, 02 September 2007 17:57 ] [ ID #1810826 ]

PHP und XML-RPC (was: Re: Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen wur

On 2 Sep., 17:57, Heiko Richler <heiko-rich... [at] nefkom.net> wrote:
> Christian Schmidt wrote:
> > Hallo,
>
> > ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> > bekommen. Beispiel:
> > Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
> > Beispiel
> [...]
> > Gibt es da eine Möglichkeit?
>
> Ja, siehe debug_backtrace:http://www.php.net/debug-backtrace.
>
> Wenn Dein Konzept stimmt solltest Du so etwas auch nur zur Fehlersuche
> und -Analyse benötigen.

ok, dann ist mein Konzept wohl falsch :-)

Ich erkläre mal den Hintergrund.

Meine Klasse ist sozusagen ein Wrapper für eine XML-RPC-API.
=DCber XML-RPC hole ich eine Liste der unterstützten Methoden
("server.listMethods"), diese schreibe ich in ein Array.

Theoretisch kann sich die Liste der unterstützten Methoden ständig
ändern (zB wird eine M. wegen Wartungsarbeiten abgeschaltet). Ich
könnte natürlich jetzt einfach die Methode aufrufen und bekomme dann
eben ein 400/Method not supported zurück. Das würde ich gerne
vermeiden.

Meine Wrapper-Methode soll also prüfen ob sie auf dem Server verfügbar
ist, indem sie Ihren eigenen Namen gegen das o.g. array vergleicht.
Steht sie drin ist alles ok, sonst wird eine Exception geworfen.

Die Alternative war, die Wrapper-Methode ruft ein
"CheckIfMethodIsSupported"-Methode auf, diese erkennt dann welche
Methode den Check aufgerufen hat und prüft dann deren Namen gegen das
array.

Dadurch wollte ich mir "unnötige" Anfragen an den XML-RPC-Server
sparen.

Ist das totaler Quatsch oder wie macht man sowas "normalerweise"?

Gruß

Christian
Christian Schmidt [ So, 02 September 2007 18:50 ] [ ID #1810828 ]

Re: Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen wurde

On 2 Sep., 17:57, Heiko Richler <heiko-rich... [at] nefkom.net> wrote:
> Christian Schmidt wrote:
> > Hallo,
>
> > ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> > bekommen. Beispiel:
> > Oder: Es soll der Namen der aufrufenden Methode ausgegeben werden.
> > Beispiel
> [...]
> > Gibt es da ene Möglichkeit?
>
> Ja, siehe debug_backtrace:http://www.php.net/debug-backtrace.
>
> Wenn Dein Konzept stimmt solltest Du so etwas auch nur zur Fehlersuche
> und -Analyse benötigen.

Kleiner Nachtrag:
=DCber Deinen Tipp mit dem debug_backtrace hab ich endlich die "magic
constants"-Seite in der Doku gefunden, die ich vorher schon erfolglos
gesucht hatte. Es gibt "__METHOD__", was genau das macht, was ich
brauche.

Gruß

Christian
Christian Schmidt [ So, 02 September 2007 18:58 ] [ ID #1810829 ]

Re: PHP und XML-RPC (was: Re: Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen

Christian Schmidt schrieb:

>Ist das totaler Quatsch oder wie macht man sowas "normalerweise"?

Evtl. ist
http://de.php.net/manual/de/language.oop5.overloading.php#la nguage.oop5.overloading.methods
etwas für dich.

--
Wolfgang Fellger
Wolfgang Fellger [ So, 02 September 2007 19:00 ] [ ID #1810830 ]

Re: [PHP5, OOP] Eigenen Methodennamen herausfinden oder von welcherMethode aufgerufen wurde

Christian Schmidt schrieb:

> ich möchte gerne innerhalb einer Methode den eigenen Methodennamen
> bekommen. Beispiel:
[..]
> Gibt es da ene Möglichkeit?

Ja, die magischen Konstanten __FUNCTION__ und __METHOD__
Siehe: http://www.php.net/manual/en/language.constants.predefined.p hp

Gruß,
Torsten
thorny [ Mo, 03 September 2007 10:09 ] [ ID #1811422 ]
PHP » de.comp.lang.php.misc » [PHP5, OOP] Eigenen Methodennamen herausfinden oder von welcher Methode aufgerufen wurde

Vorheriges Thema: die() ueberfluessig?
Nächstes Thema: PDF anzeigen und speichern